package fiuba.algo3;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public abstract class Grado {
	protected int velocidad;

	public int getVelocidad() {
		return velocidad;
	}
	
	public abstract Grado ascenderDeGrado();
	public abstract Pista recibirPista(Edificio unEdificio);
	public abstract Caso recibirCaso();

	public Node serializar(Document doc) {
		Element elementoGrado = doc.createElement("Grado");
		String gradoString = this.getClass().getSimpleName();
		elementoGrado.setAttribute("grado", gradoString);
		return elementoGrado;
	}

	public static Grado hidratar(Node elementoGrado) {
		String gradoString = ((Element)elementoGrado).getAttribute("grado");
		if (gradoString.equals("Novato")){ return new Novato(); }
		else if (gradoString.equals("Detective")){ return new Detective(); }
		else if (gradoString.equals("Investigador")){ return new Investigador(); }
		else if (gradoString.equals("Sargento")){ return new Sargento(); }
		return null;
	}
	
}